/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: Lenovo
 * Date: 2025-04-07
 * Time: 23:02
 */
public class Main {
    public static void main(String[] args) {
        String s1 = "Java";          // 来自字符串常量池
        String s2 = new String("Java"); // 显式创建新对象，位于堆中
        String s3 = "java";          // 来自字符串常量池（内容不同，大小写敏感）

        // == 比较对象引用（内存地址）
        System.out.println(s1 == s2);          // false：s1在常量池，s2是堆中新对象
        System.out.println(s1 == "Java");       // true：s1与字面量"Java"共享常量池同一对象
        System.out.println(s2 == "Java");       // false：s2是独立对象，与常量池地址不同

        // equals() 严格内容比较（区分大小写）
        System.out.println(s1.equals(s2));      // true：内容完全一致（J大小写相同）
        System.out.println(s1.equals(s3));      // false：'J' vs 'j'（大小写敏感）
        System.out.println(s2.equals(s3));      // false：同上（内容不同）

        // compareTo() 字典序比较（区分大小写）
        // 返回 Unicode 差值：'J'(74) - 'j'(106) = -32，负数表示 s1 < s3
        System.out.println(s1.compareTo(s3));

        // compareToIgnoreCase() 字典序比较（忽略大小写）
        // 将"JAVA"与"JAVA"比较，完全一致返回0
        System.out.println(s1.compareToIgnoreCase(s3));
    }
}
